在開始正式使用一個程式語言進行程式編寫前,常常會聽到前輩們說:「設定環境大概就可以弄個半天一天了。」到底這邊指的環境是什麼?而為什麼環境會這麼令人頭痛複雜。
其實環境可以簡單地被視為「運行程式、專案所需要的一切配置」,用日常生活做舉例,如果我們想養一隻金魚,我們會準備一個水族箱,裡面放入適當溫度的水,打入氧氣、種植水草等,待一切準備就緒,才會把金魚放入魚缸,正式開始養魚。
同樣地,每個專案都有所需的配置,只是在我們的日常生活中,大多數時刻我們只要執行安裝檔,瘋狂地點及下一步,安裝程式便會自動地把所有需要的軟體安裝完成,但如今我們將要成為一個軟體工程師,所以是時候換我們來幫其他不懂軟體的大眾們完成這一步了。
「環境就環境,還要虛擬環境?」為了更了解什麼虛擬環境,以及為什麼需要虛擬環境,我們要再來舉一個日常生活中的例子,幫助大家更了解虛擬環境的概念。
相信多數人都知道蘋果的 MacOS 與微軟的 Windows 作業系統,有些軟體只能在 MacOS 運行,而有些只能在 Windows 上運行,如果我們想在 MacOS 上面運行 Windows 的軟體,有經驗的人都會知道,此時我們可以選擇在 Macbook 上面安裝雙系統或模擬器,而這個模擬器就可以當作是一種虛擬環境的體現,我們在這個模擬器操作的一切行為,基本上都不會影響到原本的 MacOS 運作,像是「被隔離出來的虛擬異次元空間」,如果有天我們不需要了,也可以簡單刪除即可,不需要進行複雜的重新安裝。
同樣地,我們也會希望每次執行一個專案時,以為這個專案設置專屬的環境,在沒有虛擬環境的狀況下,我們可能要在電腦中安裝多個 Python,然而這樣做的缺點,不僅要時時切換 Python 版本,電腦裡也會因為多個版本的 Python 佔據許多硬碟空間,因此建立虛擬環境會是一個更好的選擇,而且一旦我們需要刪除專案,只要將虛擬環境的路徑一併移除,便能清掃地乾乾淨淨。
所以在開始一個新專案之前,我們會先設置一個虛擬環境,藉此創建一個隔離的環境,避免在不同專案間的相依套件發生衝突。當我們在終端機輸入 pip freeze
時(忘記 PIP 是什麼,可以回頭看這篇文章),可以看到所有目前安裝在電腦上的套件,而如果我們使用虛擬環境且處在虛擬環境的路徑內,就只會看到專屬於目前專案的套件。
能夠創建 Python 虛擬環境的套件有數種,其中又以 virtualenv 與 Poetry 這兩個最為常見,我們接下來將示範 virtualenv 的安裝與簡單使用:
pip install virtualenv
來安裝 virtualenv
。cd Document/test
(這代表 我的文件
內有一個名為 test
的資料夾)venv
:virtualenv venv
venv
:ls
(venv)
:source venv/bin/activate
pip freeze
pandas
:pip install pandas
pandas
等其他相關套件與套件版本號:pip freeze
numpy==2.1.2
pandas==2.2.3
python-dateutil==2.9.0.post0
pytz==2024.2
six==1.16.0
tzdata==2024.2
deactivate
建立虛擬環境就是這麼地輕鬆寫意,如果我們想要砍掉整個 test
專案目錄,也可以用刪除目錄的指令 rm -rf test
,一刀把所有東西刪去,完全不用擔心其他的後遺症。